package study.itwill.team5.main;

import java.util.ArrayList;

import study.itwill.common.DBHandler;
import study.itwill.team5.member.Member;
import study.itwill.team5.member.MemberItem;

/**
 * 회원 기능들을 실행하는 메인 클래스
 */
public class Main02 {
	public static void main(String[] args) {
		
		// 데이터베이스 제어 객체에 대한 참조
		DBHandler db = DBHandler.getInstance();
		
		String 	HOSTNAME = "127.0.0.1";	// 현재 내 컴퓨터
		int 	HOSTPORT = 3306;		// 기본 포트 번호
		String	DATABASE = "italia";	// Schema 이름
		String 	USERNAME = "samulman";		// 접속 계정 아이디
		String 	PASSWORD = "9878";	// 비밀번호
		String 	CHARSET = "utf8";		// 케릭터 셋
		
		db.setInfo(HOSTNAME, HOSTPORT, DATABASE, USERNAME, PASSWORD, CHARSET);
		db.connect();
		
		Member member = new Member();
		
		/** 1. 회원 계정 입력 */
		int seq = member.addMember("member01", "naver.com", "닉네임01", "member1234", "이름01", "M", "19830101", "010", "1234", "5678");
		
		if(seq < 0) {
			System.out.println("회원 계정 추가 실패");
		} else {
			System.out.println(seq + "번 회원 계정 추가됨");
		}
		
		seq = member.addMember("member02", "naver.com", "닉네임02", "member2345", "이름02", "F", "19841231", "010", "2345", "6789");
		
		if(seq < 0) {
			System.out.println("회원 계정 추가 실패");
		} else {
			System.out.println(seq + "번 회원 계정 추가됨");
		}
		
		seq = member.addMember("member03", "naver.com", "닉네임03", "member3456", "이름03", "M", "20010505", "010", "3456", "7890");
		
		if(seq < 0) {
			System.out.println("회원 계정 추가 실패");
		} else {
			System.out.println(seq + "번 회원 계정 추가됨");
		}
		System.out.println("---------------------------------------------------");
		
		
		/** 2. 회원 계정 정보수정 */
		
		boolean edit = member.editMember(2, "member02", "gmail.com", "닉네임02", "member2345", "이름02", "F", "19841231", "010", "2345", "6789");
		
		if(edit == false) {
			System.out.println("회원 계정 수정 실패");
		} else {
			System.out.println("회원 계정 수정됨");
		}
		System.out.println("---------------------------------------------------");
		
		
		/** 3. 회원 계정 삭제 */
		boolean delete = member.deleteMember(1);
		
		if(delete == false) {
			System.out.println("회원 계정 삭제 실패");
		} else {
			System.out.println("회원 계정 삭제됨");
		}
		System.out.println("---------------------------------------------------");
		
		
		/** 4. 회원 계정 조회 */
		
		// 2번 회원 계정의 정보 조회
		MemberItem item = member.viewMember(2);
		
		if(item == null) {
			System.out.println("조회된 데이터 없음");
		} else {
			System.out.println(item.toString());
		}
		System.out.println("---------------------------------------------------");
		
		/*
		 *  회원 검색을 위한 파라미터 정의
		 *  0, null : 회원 전체리스트 검색
		 *  		(전체리스트 검색은 오버로딩 정의로 숫자값 하나만을 파라미터로 받을수 있다)
		 *  1, "이메일 검색"
		 *  2, "닉네임 검색"
		 *  3, "이름 검색"
		 *  4, "성별 검색"
		 *  5, "생년월일 검색"
		 *  6, "핸드폰번호 검색"
		 */
		ArrayList<MemberItem> list = member.listMember(0);
		
		if(list == null) {
			System.out.println("조회된 데이터 없음");
		} else {
			for (int i=0; i<list.size(); i++) {
				MemberItem temp = list.get(i);
				System.out.println(temp.toString());
			}
		}
		System.out.println("---------------------------------------------------");
		
		
		/** 5. 회원 계정 로그인 */
		
		boolean login = member.loginMember("member03", "naver.com", "member3456");
		
		if(login == false) {
			System.out.println("로그인 실패");
		} else {
			System.out.println("로그인 성공");
		}
		System.out.println("---------------------------------------------------");
		
		
		/** 6. 회원 계정 로그아웃 */
		
		boolean logout = member.logoutMember("member03", "naver.com");
		
		if(logout == false) {
			System.out.println("로그아웃 실패");
		} else {
			System.out.println("로그아웃 성공");
		}
		
		
		/** 7. 회원 정보 파일로 저장 */
		
		boolean save = member.saveMember();
		
		if(save == false) {
			System.out.println("회원정보 파일로 저장 실패");
		} else {
			System.out.println("회원정보 파일로 저장 성공");
		}
		
		// 접속해제
		db.disconnect();
	}
}
